Networks are widely used to transfer voice, video, and data among various network devices such as telephones, televisions, and computers. Switches are utilized to direct network traffic among the various network devices. FIG. 1 is an example of the basic architecture of a 64-port switch 10. The input side of the switch includes sixty-four input ports 12 that are numbered from 0 to 63. The input ports are connected to eight input packet processors (IPPs) 16 that are numbered from 0 to 7. The eight IPPs are connected by eight input channels 18 (numbered 0 through 7) to a switch fabric 20 that provides the connection from input channels to output channels 22. The switch fabric is connected to eight output packet processors (OPPs) 24 that are numbered from 0 to 7 by the eight output channels 22 (numbered 0 through 7). Sixty-four output ports 28, numbered from 0 to 63, are connected to the eight OPPs.
Within the architecture of FIG. 1, the IPPs 16 manage packet traffic incoming to the switch from the input ports 12 and the OPFs 24 manage packet traffic from the switch fabric 20 to the output ports 28. In a conventional switch, a packet arrives at an IPP targeted for transmission to either a single output port, known as a unicast, or to multiple output ports, known as a multicast to selected ports or a broadcast to all of the ports. Header information from the packet is used to generate an output vector that has a width equal to the total number of output ports that are present in the system. For example, in a switch with only eight output ports. packets are forwarded through the switch fabric with an 8-bit (1-byte) output vector, where each bit relates to an output port and a set bit identifies that the corresponding output port is to receive the packet. In a system utilizing ethernet bridges and/or routers, where the minimum packet size is sixty-four bytes, the output vector overhead traveling through the switch fabric of an 8-port switch is only 1 byte/64 bytes, or approximately 1.5%. However, as more output ports are added to a switch, the width of the output vector increases proportionately.
In the 64-port switch architecture of FIG. 1, an output vector of sixty-four bits (eight bytes) is needed to represent all sixty-four output ports 28. FIG. 2 represents an incoming packet 30 with a 64-bit output vector 34 being forwarded through the switch fabric to three output channels (channels 0,1, and 7) and subsequently to the three respective OPPs (not shown). The 64-bit output vector is also transmitted with all three of the outgoing packets 38. From the OPPs, the outgoing packets 38 are distributed to the targeted output ports. The output vector overhead for a minimum size packet forwarded through the switch fabric of FIG. 2 is 8/64 or 12.5%. In a switch with 256 output ports, a 256-bit (32-byte) output vector must be forwarded through the switch fabric. The overhead for a minimum size 64-byte packet is 32/64 or 50%. An exemplary system that attaches an N-bit output vector to a packet passing through an NxN switch is disclosed in U.S. Pat. No. 5,610,914, entitled "Shared Buffer Memory Switch for an ATM Switching System and Broadcasting Control Method," issued to Yamada.
In addition to affecting the size of output vector overhead, the number of output ports in a multiport switch also affects the total number of output port combinations possible for forwarding a single packet. For example, in an 8-port switch there are 2.sup.8 or 256 possible output port combinations for forwarding a single packet. The increase in output port combinations grows exponentially in relation to the number of output ports by a factor of 2.sup.N, where N is the number of output ports. The number of output port combinations in 16, 64, 128, and 256 output port switches are 65,536, 1.8.times.10.sup.19, 3.4.times.10.sup.38, and 1.2.times.10.sup.77, respectively. Although the theoretical number of output port combinations is extremely large, the number of output port combinations actually utilized in a typical network is much lower.
While the prior art technique of utilizing an output vector that is equal to the number of output ports works well for its intended purpose, there are some shortcomings. One shortcoming is that whenever the number of output ports is increased, the number of bits in the output vector must also be increased to accommodate identification of the new output ports. Another shortcoming is that each output vector must be transmitted through the switch fabric, inefficiently consuming switch bandwidth.
In light of the observation that a limited number of output combinations are actually utilized in a typical network and the shortcomings associated with a full width output vector, what is needed is a more efficient method and system for identifying output ports that are to receive switched packets and for forwarding packets through a multiport switch.